package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**几个的排序-----Point对象*/
public class SortPoint {
    public static void main(String[] args) {
        List<Point> list= new ArrayList<>();
        list.add(new Point(5,8));
        list.add(new Point(15,68));
        list.add(new Point(52,82));
        list.add(new Point(35,83));
        list.add(new Point(15,78));
        list.add(new Point(55,22));
        System.out.println("list原始数据："+list);



            //第一种改造
        Collections.sort(list,(o1, o2) -> {
            int len1 = o1.getX()*o1.getX()+o1.getY()* o1.getY();
            int len2 = o2.getX()*o2.getX()+o2.getY()* o2.getY();
            return len1-len2;//升序

        });
        System.out.println("list排序后数据："+list);



            //第二种改造
        list.sort((o1, o2) -> {int len1 = o1.getX()*o1.getX()+o1.getY()* o1.getY();
            int len2 = o2.getX()*o2.getX()+o2.getY()* o2.getY();
            return len1-len2;});

/*                          上方为改造
        Collections.sort(list, new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                int len1 = o1.getX()*o1.getX()+o1.getY()* o1.getY();
                int len2 = o2.getX()*o2.getX()+o2.getY()* o2.getY();
                return len1-len2;//升序
//                return  len2-len1;//降序

//                return o1.getX()-o2.getX();//按x坐标升序
//                return o2.getX()-o1.getX();//按y坐标升序
            }
        });//在Point中重写了compareTo
        System.out.println("list排序后数据："+list);
*/

        list.sort(new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                return o1.getX()-o2.getX();
            }
        });
        System.out.println("list排序后数据："+list);


    }
}
